﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Ucb.Workshop.Dal;
using Ucb.Workshop.Model;
using Ucb.Workshop.Business.Util;
using Ucb.Workshop.Business;


namespace Ucb.Workshop.WinApp.View.GestionUsuario
{
    public partial class UsuarioOpc : UserControl
    {
        DBManager conexion;
        User usuario = new User();
        
        public UsuarioOpc()
        {
            conexion = new DBManager();
            InitializeComponent();

            DataSet miDataSet = new DataSet();
            string consulta;
            consulta = string.Format("SELECT cod_usuario as CodUsuario,nombre as Nombre, apellido as Apellido, telefono as Telefono, direccion as Direccion, email as Email,login as Login,password as Password,cod_tipo_usuario as Cod_tipo_usuario, estado as Estado FROM usuario");
            miDataSet = conexion.ConsultaDataSet(consulta);
            DataView miVista = new DataView(miDataSet.Tables["Table"]);
            gridUsuario.DataSource = miVista;
            gridUsuario.Columns[0].Visible = false;
            gridUsuario.Columns[8].Visible = false;

            //conexion.LlenarGrid(gridUsuario, "SELECT * FROM usuario"); //WHERE cod_tipo_usuario = 2");
            //gridUsuario.Columns[0].Visible = false;
            //gridUsuario.Columns[1].HeaderText = "Login";
            //gridUsuario.Columns[2].HeaderText = "Password";
            //gridUsuario.Columns[3].HeaderText = "Nombre";
            //gridUsuario.Columns[4].HeaderText = "Apellido";
            //gridUsuario.Columns[5].HeaderText = "Telefono";
            //gridUsuario.Columns[6].HeaderText = "Direccion";
            //gridUsuario.Columns[7].HeaderText = "E-Mail";
            //gridUsuario.Columns[8].Visible = false;
            //gridUsuario.Columns[9].HeaderText = "Estado";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (validarUsuario())
            {
                User usuario = new User();
                usuario.Login = txtLogin.Text;
                usuario.Password = txtpwd.Text;
                usuario.Name = txtNombre.Text;
                usuario.Apellido = txtapellido.Text;
                usuario.Telephone = txtFono.Text;
                usuario.Address = txtDireccion.Text;
                usuario.Email = txtEmail.Text;
                usuario.Estado = comboBoxEstado.Text;
                usuario.Register();
                MessageBox.Show("Usuario registrado");


                txtapellido.Text = "";
                txtNombre.Text = "";
                txtFono.Text = "";
                txtDireccion.Text = "";
                txtEmail.Text = "";
                txtLogin.Text = "";
                txtpwd.Text = "";
                comboBoxEstado.Text = "Activo";
            }
            else
                MessageBox.Show("Llene el formulario debidamente!!!!");
        }

        public bool validarUsuario()
        {
            if (UtilControl.ValidarTextBox(txtLogin) && UtilControl.ValidarTextBox(txtpwd) && UtilControl.ValidateText(txtNombre.Text) && UtilControl.ValidateText(txtapellido.Text) && UtilControl.ValidateAddress(txtDireccion.Text) && UtilControl.ValidateEmail(txtEmail.Text) && UtilControl.ValidateTelephone(txtFono.Text))
                return true;
            else
                return false;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            conexion.LlenarGrid(gridUsuario, "SELECT * FROM usuario");// WHERE cod_tipo_usuario = 2");
        
        }

        private void txtFono_TextChanged(object sender, EventArgs e)
        {
            if (!UtilControl.ValidateTelephone(txtFono.Text))
            {
                if (txtFono.Text.Length > 0)
                {
                    txtFono.Text = txtFono.Text.Substring(0, txtFono.Text.Length - 1);
                }
                else
                {
                    txtFono.Text = "";
                }
                txtFono.SelectionStart = txtFono.Text.Length;
            }
            if (txtFono.Text.Length > 30)
            {
                txtFono.Text = txtFono.Text.Substring(0, 30);
                txtFono.SelectionStart = txtFono.Text.Length;

            }

        }


        //ELIMINAR USUARIO

        public void llenarDatos()
        {

            usuario.CodUser = int.Parse(textBoxCodUsuarioEli.Text);
            usuario.Name = textBoxNombreEli.Text;
            usuario.Apellido = textBoxApellidoEli.Text;
            usuario.Telephone = textBoxTelefonoEli.Text;
            usuario.Address = textBoxDireccionEli.Text;
            usuario.Email = textBoxEmailEli.Text;
            usuario.Login = textBoxLoginEli.Text;
            usuario.Estado = textBoxEstadoEli.Text;


        }

        public void CargarComboBox()
        {
            comboBoxBuscarUsuarioEliminar.Text = "";
            string nombreUsuario;
            // SqlDataReader lista 
            DataSet lista = new DataSet();
            User comboUsuario = new User();

            lista = comboUsuario.ListaUsuariosOrdenada();
            for (int i = 0; i < lista.Tables[0].Rows.Count; i++)
            {
                nombreUsuario = string.Format(lista.Tables[0].Rows[i][0] + ":" + lista.Tables[0].Rows[i][1] + " " + lista.Tables[0].Rows[i][2]);//"{0}: {1} {2}", lista.Tables[0].Rows[i][0], lista.Tables[0].Rows[i][1], lista.Tables[0].Rows[i][2]);
                comboBoxBuscarUsuarioEliminar.Items.Add(nombreUsuario);
            }

        }

        private void comboBoxBuscarUsuarioEliminar_SelectedIndexChanged(object sender, EventArgs e)
        {
            string codigousuario = comboBoxBuscarUsuarioEliminar.Text.Split(':')[0];
            textBoxCodUsuarioEli.Text = codigousuario;
            DataSet lista = new DataSet();//SqlDataReader lista;
            User listaUsuario = new User();
            lista = listaUsuario.ListaDeUsuarios(int.Parse(codigousuario));
            textBoxNombreEli.Text = lista.Tables[0].Rows[0][1].ToString();
            textBoxApellidoEli.Text = lista.Tables[0].Rows[0][2].ToString();
            textBoxTelefonoEli.Text = lista.Tables[0].Rows[0][3].ToString();
            textBoxDireccionEli.Text = lista.Tables[0].Rows[0][4].ToString();
            textBoxEmailEli.Text = lista.Tables[0].Rows[0][5].ToString();
            textBoxLoginEli.Text = lista.Tables[0].Rows[0][6].ToString();
            textBoxPassActualEli.Text = lista.Tables[0].Rows[0][7].ToString();
            textBoxEstadoEli.Text = lista.Tables[0].Rows[0][8].ToString();
        }

       
        private void buttonEliminar_Click(object sender, EventArgs e)
        {
            User eliUsuario = new User();
            llenarDatos();

            if (textBoxCodUsuarioEli.Text != string.Empty)
            {
                if (textBoxEstadoEli.Text != "Inactivo")
                {
                    eliUsuario.EliminarUsuario(int.Parse(textBoxCodUsuarioEli.Text));
                    MessageBox.Show("Se elimino correctamente.");
                }
                else
                    MessageBox.Show("No se puede eliminar porque esta en estado Inactivo");


            }
            else
                MessageBox.Show("Debe seleccionar un usuario para poder eliminarlo.");

        }

        //MODIFICAR USUARIO
        public void llenarDatosModi()
        {

            usuario.CodUser = int.Parse(textBoxCodUsuarioModi.Text);
            usuario.Name = textBoxNombreModi.Text;
            usuario.Apellido = textBoxApellidoModi.Text;
            usuario.Telephone = textBoxTelefonoModi.Text;
            usuario.Address = textBoxDireccionModi.Text;
            usuario.Email = textBoxEmailModi.Text;
            usuario.Login = textBoxLoginModi.Text;
            usuario.Estado = comboBoxEstadoModi.Text;


        }
        public void CargarComboBoxModi()
        {
            comboBoxBuscarUsuarioModificar.Text = "";
            string nombreUsuario;
            // SqlDataReader lista 
            DataSet lista = new DataSet();
            User comboUsuario = new User();

            lista = comboUsuario.ListaUsuariosOrdenada();
            for (int i = 0; i < lista.Tables[0].Rows.Count; i++)
            {
                nombreUsuario = string.Format(lista.Tables[0].Rows[i][0] + ":" + lista.Tables[0].Rows[i][1] + " " + lista.Tables[0].Rows[i][2]);//"{0}: {1} {2}", lista.Tables[0].Rows[i][0], lista.Tables[0].Rows[i][1], lista.Tables[0].Rows[i][2]);
                comboBoxBuscarUsuarioModificar.Items.Add(nombreUsuario);
            }

        }

        

        private void comboBoxBuscarUsuarioModificar_SelectedIndexChanged(object sender, EventArgs e)
        {
            string codigousuario = comboBoxBuscarUsuarioModificar.Text.Split(':')[0];
            textBoxCodUsuarioModi.Text = codigousuario;
            DataSet lista = new DataSet();//SqlDataReader lista;
            User listaUsuario = new User();
            lista = listaUsuario.ListaDeUsuarios(int.Parse(textBoxCodUsuarioModi.Text));
            textBoxNombreModi.Text = lista.Tables[0].Rows[0][1].ToString();
            textBoxApellidoModi.Text = lista.Tables[0].Rows[0][2].ToString();
            textBoxTelefonoModi.Text = lista.Tables[0].Rows[0][3].ToString();
            textBoxDireccionModi.Text = lista.Tables[0].Rows[0][4].ToString();
            textBoxEmailModi.Text = lista.Tables[0].Rows[0][5].ToString();
            textBoxLoginModi.Text = lista.Tables[0].Rows[0][6].ToString();
            textBoxPassActualModi.Text = lista.Tables[0].Rows[0][7].ToString();
            comboBoxEstadoModi.Text = lista.Tables[0].Rows[0][8].ToString();
        }

        private void buttonModificar_Click(object sender, EventArgs e)
        {
            User modiUsuario = new User();
            llenarDatosModi();

            if (textBoxCodUsuarioModi.Text != string.Empty)
            {
                if (comboBoxEstadoModi.Text != "Inactivo")
                {
                    modiUsuario.ModificarUsuario(usuario);

                    MessageBox.Show("Actualizo sus datos correctamente...");
                    
                }
                //else
                //    MessageBox.Show("el usuario es Inactivo por lo que no se puede modificar sus datos...");


            }
            else
                MessageBox.Show("Debe seleccionar un usuario para poder actualizar sus datos.");



        }

        

        private void comboBoxBuscarUsuarioModificar_Click(object sender, EventArgs e)
        {
            
        }

        private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
        {
            CargarComboBoxModi();
            CargarComboBox();
        }

       

       

    }
}
